/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package cz.muni.fi.pb138.videolibrary.database;

import java.util.ArrayList;
import java.util.Objects;
import java.util.logging.Logger;

/**
 *
 * @author Martin Hatina, Dominika Hoďovská
 */
public class Medium {
    private long id;
    private String title;
    private String author;
    private String content;
    private ArrayList<String> category;
    private ArrayList<String> language;

    private static final Logger LOG = Logger.getLogger(Medium.class.getName());    

    /**
     * @brief konštruktor média
     * @param title názov média
     */
    
    public Medium(String title) {
        this.title = title;
        language = new ArrayList<>();
        category = new ArrayList<>();
    }

    /**
     * @return id média
     * @brief getter parametru ID
     */
    
    public long getId() {
        return id;
    }

    /**
     * @brief setter parametru id
     * @param id nová hodnota parametru id
     */
    
    public void setId(long id) {
        this.id = id;
    }

    /**
     * @return názov média
     * @brief getter parametru title
     */
    
    public String getTitle() {
        return title;
    }

    /**
     * @brief setter parametru title
     * @param title nová hodnota parametru title
     */
    
    public void setTitle(String title) {
        this.title = title;
    }

    /**
     * @return autor média
     * @brief getter parametru author
     */
    
    public String getAuthor() {
        return author;
    }

    /**
     * @brief setter parametru author
     * @param author nová hodnota parametru author
     */
    
    public void setAuthor(String author) {
        this.author = author;
    }

    /**
     * @return obsah média
     * @brief getter parametru content
     */
    
    public String getContent() {
        return content;
    }

    /**
     * @brief nastavenie obsahu média
     * @param content obsah média
     */
    
    public void setContent(String content) {
        this.content = content;
    }
    
    /**
     * @brief pridanie kategórie média
     * @param category pridávaná kategória
     */
    
    public void addCategory(String category) {
        this.category.add(category);
    }

    /**
     * @brief zmazanie kategórie média
     * @param category mazaná kategória média
     */
    
    public void deleteCategory(String category) {
        this.category.remove(category);
    }

    /**
     * @return list kategórií v ktorých je médium zaradené
     * @brief získanie kategórií média
     */
    
    public ArrayList<String> getAllCategory() {
        return category;
    }       

    /**
     * @brief pridanie daného jazyku médiu
     * @param language pridávaný jazyk
     */
    
    public void addLanguage(String language) {
        this.language.add(language);
    }

    /**
     * @brief odobratie daného jazyku média
     * @param language odoberaný jazyk
     */
    
    public void deleteLanguage(String language) {
        this.language.remove(language);
    }

    /**
     * @return list jazykov média
     * @brief získanie jazykov média
     */
    
    public ArrayList<String> getAllLanguage() {
        return language;
    }

    /**
     * @return hash code objektu
     * @brief generátor hash codu média
     */
    
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 79 * hash + Objects.hashCode(this.title);
        return hash;
    }

    /**
     * @return boolean rovnosti objektov
     * @brief rovnosť objektov
     * @param obj porovnávaný objekt
     */
    
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Medium other = (Medium) obj;
        if (!Objects.equals(this.title, other.title)) {
            return false;
        }
        return true;
    }

    /**
     * @return string s výpisom atributov
     * @brief výpis média
     */
    
    @Override
    public String toString() {
        return "Medium{" + "id=" + id + ", title=" + title + ", language=" + language + '}';
    }        
}
